/********************************************************************************
考试指南显示
 ********************************************************************************/
var G_ArrNodes = []; //存储当前显示菜单的数据
var G_ArrTitle = []; //存储用户选择过的标题
var G_testInfoMenuData = ''; //接收考试指南json数据
var beginTime = ''; //开始阅读指南的时间
var guideId = '';
var guideTitle = '';
/********************************************************************************
函数名：页面加载函数
功能：加载时页面，立即触发的事件
输入参数:无
返回值： 无
创建信息: 何允俭（2014-07-1）
修改信息：无
审查人：无
 ********************************************************************************/
function init() {
  G_UserAction.loadObject();
  getUserSetting();
  var setHtml = document.getElementById('settingDialog').innerHTML;
  loadTestInfoMenuJson();
  G_Prg.$('back').onclick = function () {
    backClick();
  };
  G_Prg.$('setting').onclick = function () {
    G_UserAction.addUserAction('testInfoSettingBtn');
    settingClick(setHtml);
  }
};
/********************************************************************************
函数名：setcpmArrNodes
功能：未登录登录用户成功登录返回考试指南，设置全局数组数据
输入参数:无
返回值：无
创建信息:何允俭（2014-08-18）
审查人：无
 ********************************************************************************/
function setcpmArrNodes() {
  var _lastMenuID = G_Prg.getQueryString('lastMenuID', true);
  var _ID = _lastMenuID.substring(0, 3);
  var _idxMenu = 1; //idxMenu为目录的级数
  var _menuName; //当前菜单目录名称
  var _curMenu = G_testInfoMenuData.Childs;
  var _sonMenu; //当前菜单的子菜单
  G_ArrTitle.push('考试指南');
  G_ArrNodes.push(_curMenu);
  while (_curMenu) {
    for (var i = 0 && _ID; i < _curMenu.length; i++) { //在curMenu搜索ID菜单
      if (_curMenu[i].ID !== _ID) {
        continue;
      } else { //找到ID菜单目录
        _menuName = _curMenu[i].Name;
        _sonMenu = _curMenu[i].Childs;
        break;
      }
    }
    if (_sonMenu) {
      G_ArrTitle.push(_menuName);
      G_ArrNodes.push(_sonMenu);
    }
    _idxMenu++;
    if (3 * _idxMenu > _lastMenuID.length) {
      break;
    } else {
      _ID = _lastMenuID.substring(0, 3 * _idxMenu);
    }
    _curMenu = _sonMenu; //下一级目录
  }
}
/********************************************************************************
函数名：loadTestInfoMenuJson
功能：从服务器获取考试指南目录json数据
输入参数:无
返回值：无
创建信息: 何允俭（2014-07-01）
修改信息：何允俭（2014-07-08） 根据后台消灭了status为-1和201情况
何允俭 （2014-07-15）将处理后台返回信息代码改为if-else if-else 的格式
审查人：无
 ********************************************************************************/
function loadTestInfoMenuJson() {
  var appEName = G_Cookie.getAppEName();
  if (!appEName) {
    G_prg.throw('程序运行错误，testInfoMenu.loadTestInfoMenuJson:appEName="' + appEName + '", 获取数据出现异常');
  }
  var _success = function (json) {
    var jsonData = JSON.parse(json);
    if (jsonData.status === 400) { // 400 请求参数有误
      G_maiDian.setBugRecordInfos('业务逻辑错误', '考试指南——获取目录列表', jsonData.status + ':' + jsonData.msg);
      G_Prg.throw('程序运行错误：testInfoMenu.loadTestInfoMenuJson,请求参数有误' + jsonData.status, function () {
        window.location.href = 'default.html?fromUrl=html/testInfoMenu.html';
      });
    } else if (jsonData.status === 300) { //300 连接数据库失败
      G_maiDian.setBugRecordInfos('程序错误', '考试指南——获取目录列表', jsonData.status + ':' + jsonData.msg);
      G_Prg.throw('程序运行错误：testInfoMenu.loadTestInfoMenuJson,数据库获取数据异常' + jsonData.status, function () {
        window.location.href = 'default.html?fromUrl=html/testInfoMenu.html';
      });
    } else if (jsonData.status === 201) { //201 没有数据
      G_Prg.throw('程序运行错误：testInfoMenu.loadTestInfoMenuJson,暂无备考资料' + jsonData.status, function () {
        window.location.href = 'default.html?fromUrl=html/testInfoMenu.html';
      });
    } else if (jsonData.status === 200) { // 200 获取数据成功
      var data = jsonData.data;
      G_testInfoMenuData = JSON.parse(data);
      var fromUrl = G_Prg.getQueryString('fromUrl');
      if (fromUrl === 'userLogin.html' || fromUrl === 'selectPrice.html') {
        setcpmArrNodes();
        createTestInfoMenuHTML(G_ArrNodes[G_ArrNodes.length - 1]); //显示目录
        //G_Prg.$('back').innerHTML = G_ArrTitle[G_ArrTitle.length - 1]; //显示目录的名称
        var menuName=G_ArrTitle[G_ArrTitle.length - 1];
        if(menuName.length>12){
          menuName=menuName.substring(0,12)+'...';
        }
        G_Prg.$('back').innerHTML = menuName;

        return;
      } else {
        var curMenu = G_testInfoMenuData.Childs;
        G_ArrTitle.push('考试指南');

        var tempArr = [];
        for(var i = 0; i < curMenu.length;i++){
          if(curMenu[i].Name != '重点考点'){
            tempArr.push(curMenu[i]);
          }
        }
        G_ArrNodes.push(tempArr);
        createTestInfoMenuHTML(tempArr); //显示目录
        return;
      }
    } else { // 不能处理错误
      G_maiDian.setBugRecordInfos('其它程序错误', '考试指南——获取目录列表', jsonData.status + ':' + jsonData.msg);
      G_Prg.throw('程序运行错误，不能处理，TestData.getAllTestJSON : status = "' + jsonData.status + '"！', function () {
        window.location.href = '../html/chapterMenu.html?fromUrl=default.html';
      });
    }
  };

  G_AjaxApi_Record.get('/api/testInfoMenu/getTestInfoMenu/' + appEName, true, _success);
}
/********************************************************************************
函数名：createTestInfoMenuHTML
功能：  动态产生页面内容
输入参数:curMenu 菜单数组
返回值： 无
创建信息: 何允俭（2014-07-01）
修改信息：韦友爱（2014-07-21）添加样式设置setCss();
审查人：无
 ********************************************************************************/
function createTestInfoMenuHTML(curMenu) {
  if (!curMenu) { //判断目录是否为空
    var fromUrl = G_Prg.getQueryString('fromUrl');
    window.location.href = fromUrl;
    return;
  }
  G_Prg.$('menuBar').style.display = 'none';
  G_Prg.$('SourceTestInfo').innerHTML = '';
  window.scrollTo(0, 0);
  addLi(curMenu);
  setCss();
}
/********************************************************************************
函数名：addLi
功能：动态添加li标签
输入参数: curMenu 菜单数组
返回值：无
创建信息：何允俭（2014-07-01）
修改记录：韦友爱（2014-08-07）添加cookie TestInfoHistory比对，将用户已选择过的变成灰色
审查人：无
 *******************************************************************************/
function addLi(curMenu) {
  var appEName = G_Cookie.getAppEName();
  for (var i = 0; i < curMenu.length; i++) { //遍历数据
    var item = curMenu[i]; //列表id
    var ulTag = document.createElement('ul');
    ulTag.className = 'soft';
    var spanTag = document.createElement('span');
    spanTag.innerHTML = item.Name;
    if ((appEName.indexOf('ZC_ZGHS') >= 0 && appEName.indexOf('_YTMJ') >= 0) && item.Name === '重点考点') {
      spanTag.style.color = '#f00';
    }
    var liTag = document.createElement('li');
    liTag.id = i;
    liTag.onclick = function () {
      menuClick(this.id);
    }
    //下一层菜单为最后一层时为imgTag标签指定不同的图片
    if (item.Childs) {
      liTag.className = 'chapter_fix1';
    } else {
      var testInfoID = G_Cookie.getTestInfoHistory(G_Cookie.getAppEName());
      if (testInfoID) {
        for (var j = 0; j < testInfoID.length; j++) {
          if (testInfoID[j] === item.ID) {
            liTag.className = 'chapter_fix_visited';
            break;
          } else {
            liTag.className = 'chapter_fix3';
          }
        }
      } else {
        liTag.className = 'chapter_fix3';
      }
    }
    G_Prg.$('SourceTestInfo').appendChild(ulTag);
    ulTag.appendChild(liTag);
    liTag.appendChild(spanTag);
  }
}
/********************************************************************************
函数名：menuClick
功能：点击当前目录节点，触发事件
创建信息：何允俭（2014-07-01）
输入参数: curMenuArrIndex 数组下标
返回值：无
修改记录：何允俭（2014-07-15）menuArrIndex改为curMenuArrIndex
韦友爱（2014-08-07）将用户当前点击的最后一级目录节点ID存储到cookie（TestInfoHistory）中
何允俭（2014-08-14）添加正则表达式去掉字符串空格
审查人：无
 *******************************************************************************/
function menuClick(curMenuArrIndex) {
  var curMenu = G_ArrNodes[G_ArrNodes.length - 1];
  var menuName = curMenu[curMenuArrIndex].Name;
  var sonMenu = curMenu[curMenuArrIndex].Childs; //子菜单
  G_UserAction.addUserAction('selGuidMenu_' + G_ArrNodes.length + '_' + menuName);

  //alert(menuName);
  //点击节点，判断是否有子节点
  if (!sonMenu) { //无子节点
    var preMenuName = G_ArrTitle[G_ArrNodes.length - 1]; //上一级目录名字
    var lastMenuID = curMenu[curMenuArrIndex].ID;
    var userID = parseInt(G_Cookie.getUserID());
    var appEName = G_Cookie.getAppEName();
    if ((curMenuArrIndex === '0' || curMenuArrIndex === '1' || curMenuArrIndex === '2') && ((preMenuName.replace(/(^\s*)|(\s*$)/g, "") === '考试大纲') || ((lastMenuID.substring(0, 6) === '001001') && (lastMenuID.substring(0, 3) === '001')))) { //三级目录时：001为考试大纲在sqlite中的InfoID, (lastMenuID.substring(0,6) === '001001')||(lastMenuID.substring(0,3) === '001')。 两级目录时：'考试大纲是解决只有两级目录的时候，如中级经济师（保险）。
      G_ArrTitle.push(menuName);
      G_ArrNodes.push(null);
      G_Cookie.setTestInfoHistory(appEName, curMenu[curMenuArrIndex].ID);
      createTestInfoHtml(appEName, lastMenuID); //显示考试指南信息
    } else {
      if (!userID) { //未登录用户，提示去登录
        var yesCallback = function () {
          window.location.href = 'userLogin.html?fromUrl=testInfoMenu.html&toUrl=userLogin.html&lastMenuID=' + lastMenuID;
        }
        if (typeof(G_maiDian) !== 'undefined') {
          G_maiDian.probationClickCount(); //埋点用户试用
        }
        G_Prg.confirm('请先登录再阅读！', yesCallback);
        return;
      }
      if (!G_Prg.checkVipApp()) { //未购买过当前科目的用户，提示用户购买
        var eerorBox = document.getElementById('nrdvMsgBox');
        if (eerorBox && eerorBox.style.display === 'block') { //判断是否有报错弹窗（被踢下线）
          return;
        }
        if (typeof(G_maiDian) !== 'undefined') {
          G_maiDian.probationClickCount(); //埋点用户试用
        }
          G_GoBuySoft.goBuySoft('请先购买后再阅读！','../html/selectPrice.html?fromUrl=testInfoMenu.html&lastMenuID=' + lastMenuID);
        return;
      }
      //用户已登录并购买了该科目
      G_ArrTitle.push(menuName);
      G_ArrNodes.push(null);
      G_Cookie.setTestInfoHistory(appEName, curMenu[curMenuArrIndex].ID);
      createTestInfoHtml(appEName, lastMenuID); //显示考试指南信息
    }
  } else { //有子节点，加载子节点
    G_ArrTitle.push(menuName);
    G_ArrNodes.push(sonMenu);
    createTestInfoMenuHTML(sonMenu); //生成菜单html
    //G_Prg.$('back').innerHTML = menuName; //头部显示所选目录的父节点名称
    if(menuName.length>12){
      menuName=menuName.substring(0,12)+'...';
    }
    G_Prg.$('back').innerHTML = menuName; //头部显示所选目录的父节点
  }
}

/********************************************************************************
函数名：createTestInfoHtml
功能：点击最后层菜单，触发事件显示考试指南信息
创建信息：何允俭（2014-07-06）
输入参数: appEName 软件英文名
lastMenuID  最后节点的ID
返回值：无
修改记录：陶云 （2016-05-10)添加埋点统计
审查人：无
 *******************************************************************************/
function createTestInfoHtml(appEName, lastMenuID) {
  var _success = function (testInfoHtml) {
    if (testInfoHtml === '') {
      G_Prg.throw('sqlite数据库没有指南信息', backClick);
      return;
    }
    /****埋点统计需要的数据****/
    guideId = lastMenuID;
    beginTime = G_Prg.datetimeFormat(new Date(), 'yyyy-MM-dd hh:mm:ss');
    guideTitle = G_ArrTitle[G_ArrTitle.length - 1];
    /****埋点统计需要的数据end****/
    var startindex = testInfoHtml.indexOf('<body>') + 6;
    var endindex = testInfoHtml.indexOf('</body>');
    var bodyText = testInfoHtml.substring(startindex, endindex);
    if (bodyText.split('REC-html40\">')[1]) { // 特殊处理xhtml
      bodyText = bodyText.split('REC-html40\">')[1]; //去除页面头部的英文乱码
    }
    if (bodyText.split('transitional.dtd">')[1]) { // 特殊处理xhtml
      bodyText = bodyText.split('transitional.dtd">')[1]; //去除页面头部的英文乱码
    }
    if (bodyText.split('loose.dtd">')[1]) { // 特殊处理xhtml
      bodyText = bodyText.split('loose.dtd">')[1]; //去除页面头部的英文乱码
    }
    bodyText = G_SetTestInfo.setImgTagURL(bodyText); //处理字符串中的图片地址 setImgTagURL  setImgURL
    bodyText = G_SetTestInfo.setImgURL(bodyText,'guide');
    var menuName=G_ArrTitle[G_ArrTitle.length - 1];
    if(menuName.length>12){
      menuName=menuName.substring(0,12)+'...';
    }
    G_Prg.$('back').innerHTML = menuName;


    /*var testInfoHtml = G_SetTestInfo.setImgTagURL(testInfoHtml); //处理字符串中的图片地址
    testInfoHtml = G_SetTestInfo.setImgURL(testInfoHtml);
    G_Prg.$('back').innerHTML = G_ArrTitle[G_ArrTitle.length - 1];
    var startindex = testInfoHtml.indexOf('<body>') + 6;
    var endindex = testInfoHtml.indexOf('</body>');
    var bodyText = testInfoHtml.substring(startindex, endindex);
    if (bodyText.split('REC-html40\">')[1]) { // 特殊处理xhtml
    bodyText = bodyText.split('REC-html40\">')[1]; //去除页面头部的英文乱码
    }
    if (bodyText.split('transitional.dtd">')[1]) {  // 特殊处理xhtml
    bodyText = bodyText.split('transitional.dtd">')[1]; //去除页面头部的英文乱码
    }*/
    G_Prg.$('SourceTestInfo').innerHTML = bodyText;
    G_Prg.$('SourceTestInfo').className = 'htmlDiv'; //切换显示考试指南内容的样式
    window.scrollTo(0, 0);
    setCss();
    G_Prg.$('menuBar').style.display = 'block';
    return;
  };
  G_AjaxApi_Record.get('/api/testInfoMenu/getTestInfoHtml/' + appEName + '/' + lastMenuID, true, _success);

}

/********************************************************************************
函数名：setCss
功能：设置自定义样式
输入参数: 无
返回值: 无
创建信息：韦友爱（2014-07-20）
修改记录：韦友爱（2014-07-21）添加类样式的判断
添加字体样式控制
何允俭（2014-10-08）添加图片控制
审查人：无
 *******************************************************************************/
function setCss() {
  var sourcrArr = document.getElementsByClassName('htmlDiv');
  if (sourcrArr.length === 0) {
    document.body.style.backgroundColor = '';
    document.body.style.color = '';
    return;
  }
  //设置自定义样式
  var fontSize = G_Cookie.getFontSize() || '20px';
  var bgColor = G_Cookie.getDayMode() || G_Cookie.getNightMode() || '#FFF';
  var fontColor = G_Cookie.getDFontColor() || G_Cookie.getNFontColor() || '#000';
  document.body.style.backgroundColor = bgColor;
  document.getElementById('SourceTestInfo').style.fontSize = fontSize;
  document.body.style.color = fontColor;
  var pTag = document.getElementsByTagName('p'); //p标签内字体颜色大小控制
  for (var i = 0; i < pTag.length; i++) {
    pTag[i].style.fontSize = fontSize;
    pTag[i].style.color = fontColor;
    pTag[i].style.lineHeight = '135%';
  }
  var tableTag = document.getElementsByTagName('table'); //表格边框控制
  for (var i = 0; i < tableTag.length; i++) {
    tableTag[i].style.borderColor = fontColor;
  }
  var imgTag = document.body.getElementsByTagName('img'); //图片控制
  for (var i = 0; i < imgTag.length; i++) {
    imgTag[i].style.maxWidth = '100%';
    imgTag[i].style.height = 'auto';
    if (imgTag[i].src.indexOf('http://t.api.ksbao.com/', 0) > -1) {
      imgTag[i].onclick = function () {
        var b = this;
        G_ImageZoom(b);
      };
    }
  }
  var spanTag = document.getElementsByTagName('span'); //span标签内字体颜色大小控制
  for (var i = 0; i < spanTag.length; i++) {
    spanTag[i].style.fontSize = fontSize;
    spanTag[i].style.color = fontColor;
    spanTag[i].style.lineHeight = '135%';
  }
  var fontTag = document.getElementsByTagName('font'); //font标签内字体颜色大小控制
  for (var i = 0; i < fontTag.length; i++) {
    fontTag[i].style.fontSize = fontSize;
    fontTag[i].style.color = fontColor;
    fontTag[i].style.lineHeight = '135%';
  }
  var tdTag = document.getElementsByTagName('td'); //td标签内字体颜色大小控制
  for (var i = 0; i < tdTag.length; i++) {
    tdTag[i].style.fontSize = fontSize;
    tdTag[i].style.color = fontColor;
    tdTag[i].style.lineHeight = '135%';
  }
}
/********************************************************************************
函数名：backClick
功能：点击返回图标，删当前数组节点，创建上一个数组节点html数据
创建信息：何允俭（2014-07-01）
输入参数: 无
返回值： 无
修改信息：陶云 （2016-05-10）添加埋点统计
审查人：无
 *******************************************************************************/
function backClick() {
  if (beginTime) { //这里是埋点
    var endTime = G_Prg.datetimeFormat(new Date(), 'yyyy-MM-dd hh:mm:ss');
    if(typeof(G_maiDian)!=='undefined'){
    G_maiDian.guideClickCount(guideId, beginTime, endTime, guideTitle);
    }
  }
  beginTime = ''; //退出考试指南的时候清空开始时间

  //是否第一级目录
  if (G_ArrNodes.length === 1 || G_ArrNodes.length === 0) {
    var fromUrl = G_Prg.getQueryString('fromUrl');
    if (!fromUrl || fromUrl === 'userLogin.html' || fromUrl === 'selectPrice.html') {
      var fromUrl = '../html/default.html?fromUrl=testInfoMenu.html';
      window.location.href = fromUrl;
    } else {
      window.location.href = fromUrl + '?fromUrl=testInfoMenu.html';
    }
    return;
  }
  //在数组的尾部删除元素
  G_ArrNodes.pop();
  G_ArrTitle.pop();
  //获取上一级菜单目录数据
  var curMenu = G_ArrNodes[G_ArrNodes.length - 1];
  G_Prg.$('SourceTestInfo').className = 'chapter_fix'; //切换显示考试指南目录的样式
  //重新生成菜单html
  createTestInfoMenuHTML(curMenu);
  //头部显示所选目录的父节点name
  var menuName=G_ArrTitle[G_ArrTitle.length - 1];
  if(menuName.length>12){
    menuName=menuName.substring(0,12)+'...';
  }
  G_Prg.$('back').innerHTML = menuName;

}
/********************************************************************************
函数名：settingClick
功能：软件设置点击事件，弹出软件设置弹出框
输入参数:setHtml 软件设置弹出框的html
返回值：无
创建信息：韦友爱（2014-07-21）
修改记录：无
审查人：无
 ********************************************************************************/
function settingClick(setHtml) {
  document.getElementById('settingDialog').innerHTML = '';
  // var _setHtml = document.getElementById('settingDialog').innerHTML;
  G_Prg.htmlContent('80%', '200px', '软件设置', '', true); //弹出窗口，把html移动到弹出框，动态添加
  document.getElementById('hcdialogBody').innerHTML = setHtml;
  G_Prg.$('hcdvMsgBackBtn').style.display = 'none';
  G_Prg.$('hcdvMsgClose').style.display = 'block';
  G_Prg.$('hcShowBolightBox').onclick = function () {
    G_DialogContent.dispose();
    document.body.style.overflow = "scroll"; //强制滚动条
  }
  softSetting();
}
/********************************************************************************
函数名：softSetting
功能：软件设置初始化
输入参数:无
返回值：无
创建信息：韦友爱（2014-07-21）
修改记录：无
审查人：无
 ********************************************************************************/
function softSetting() {
  if (G_Cookie.getNightMode()) {
    setBgColor('night');
    G_Prg.$('hcdvMsgBox').style.background = '#152d35';
  } else {
    setBgColor('day');
    G_Prg.$('hcdvMsgBox').style.background = '';
  }
  setCss();
  var fontSize = G_Cookie.getFontSize() || '16px';
  document.body.style.fontSize = fontSize;
  G_Prg.$('minusSize').onclick = function () {
    G_UserAction.addUserAction('setFontBtn3');
    minusSizeClick();
    setCss();
  };
  G_Prg.$('addSize').onclick = function () {
    G_UserAction.addUserAction('setFontBtn3');
    addSizeClick();
    setCss();
  };
  G_Prg.$('dayMode').onclick = function () {
    G_UserAction.addUserAction('setDayNightBtn3');
    setBgColor('day');
    G_Prg.$('hcdvMsgBox').style.background = '';
    setCss();
  }; //设置白天模式
  G_Prg.$('nightMode').onclick = function () {
    G_UserAction.addUserAction('setDayNightBtn3');
    setBgColor('night');
    G_Prg.$('hcdvMsgBox').style.background = '#152d35';
    setCss();
  }; //设置夜间模式
}
